#ifndef _AABB
#define _AABB

#include "FEngineType.h"

namespace FEngine
{
	/**
	 * Represent a Bouncing Box.
	 */
	class AABB
	{

		public:

			/**
			 * Constructor.
			 */
			AABB();
			
			/**
			 * Constructor.
			 * @param _minPoint Minimun bounding point of the AABB.
			 * @param _maxPoint Maximun bounding point of the AABB.
			 */
			AABB(const Vector3& _minPoint, const Vector3& _maxPoint);
			~AABB();

			/**
			 * Center of the AABB.
			 * @return Center point of the AABB
			 */
			Vector3 center() const;
			
			/**
			 * Set the minimum point of the AABB.
			 * @param _point Minimum point of the AABB.
			 */
			void setMinPoint(const Vector3& _point);
			
			/**
			 * Return the minimum point of the AABB.
			 * @return Minimum point of the AABB.
			 */
			Vector3 getMinPoint() const;
			
			/**
			 * Set the minimum point of the AABB.
			 * @param _point Minimum point of the AABB.
			 */
			void setMaxPoint(const Vector3& _point);
			
			/**
			 * Return the minimum point of the AABB.
			 * @return Minimum point of the AABB.
			 */
			Vector3 getMaxPoint() const;


		private:
			
			Vector3 mMinPoint;
			Vector3 mMaxPoint;

	};

} // namespace FEngine

#endif
